package com.chy.blog_server.modular.web.entity;

import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chy.blog_server.core.util.UserUtil;
import com.chy.blog_server.modular.sharCore.BaseEntity;
import com.chy.blog_server.modular.system.entity.SysUser;
import lombok.Getter;
import lombok.Setter;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;


/**
 * 描述：文章表 实体类
 * 作者：chenhuiyan
 * 时间：2020/03/01 12:43
 */
@Getter
@Setter
@TableName(value = "bo_article")
public class BoArticle extends BaseEntity {

    /**
     * 标题
     */
    private String title;

    /**
     * 简介
     */
    private String remark;

    /**
     * 内容
     */
    private String content;

    /**
     * 文章封面图
     */
    private String img;

    /**
     * 阅读数量
     */
    @TableField(value = "read_num")
    private Integer readNum;

    /**
     * 赞数量
     */
    @TableField(value = "praise_num")
    private Integer praiseNum;

    /**
     * 推荐(0正常，1推荐)
     */
    @TableField(value = "is_top")
    private Integer isTop;

    /**
     * 发布人名称
     */
    private String userName;

    /**
     * 发布类型（0站长发布，1游客发布）
     */
    private Integer type;

    /**
     * 审核状态（0审核中，1通过，2不通过）
     */
    @TableField(value = "is_pass")
    private Integer isPass;

    /**
     * 添加数据时调用该方法生成
     * @param request
     */
    public void preInsert(HttpServletRequest request){
        SysUser user = UserUtil.getUserFromSession(request);
        if(ObjectUtil.isNotEmpty(user)){
            this.setCreateBy(user.getId());
            this.setUpdateBy(user.getId());
        }
        this.setId(IdUtil.simpleUUID());
        this.setCreateDate(new Date());
        this.setUpdateDate(new Date());
    }

    /**
     * 更新数据时调用该方法生成
     * @param request
     */
    public void preUpdate(HttpServletRequest request){
        SysUser user = UserUtil.getUserFromSession(request);
        if(ObjectUtil.isNotEmpty(user)){
            this.setUpdateBy(user.getId());
        }
        this.setUpdateDate(new Date());
    }

}
